In [1]:
import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
import os
In [2]:
df = pd.read_csv('final.csv')
df.head()
Out[2]:
Unnamed: 0 날짜 score 거래회전율 환율 fg_score
0 0 2022-06-01 38.918779 NaN NaN 38.918779
1 1 2022-06-02 28.718668 19.924295 43.600000 30.747654
2 2 2022-06-03 32.634572 0.000000 41.466667 24.700413
3 3 2022-06-04 40.270144 NaN NaN 40.270144
4 4 2022-06-05 37.634442 NaN NaN 37.634442

결과 확인¶

In [3]:
fig = px.line(df, x='날짜', y='fg_score')
fig

데이터별 비교¶

In [4]:
fig = go.Figure()

date = df['날짜'].values
score = df['score'].values
fg_score = df['fg_score'].values
volume = df['거래회전율'].values
exchange = df['환율'].values

fig.add_trace(go.Scatter(x=date, y=fg_score, mode="lines", name="fg_score"))
fig.add_trace(go.Scatter(x=date, y=score, mode="lines", name="score"))
fig.add_trace(go.Scatter(x=date, y=volume, mode="lines", name="volume"))
fig.add_trace(go.Scatter(x=date, y=exchange, mode="lines", name="exchange"))
  • 비정형 데이터, 환율, 거래량 순으로 결과와 유사

KTOP30과 비교: 종가, 거래량¶

In [5]:
ktop30 = pd.read_csv('ktop30.csv', encoding='euc-kr')
ktop30.head()
Out[5]:
날짜 종가 전일비 등락률(%) 시가 고가 저가 거래량
0 2022-06-30 16,075 -320 -1.95 16,225 16,265 16,075 274
1 2022-06-29 16,395 -85 -0.52 16,485 16,485 16,395 121
2 2022-06-28 16,480 -15 -0.09 16,595 16,595 16,480 44
3 2022-06-27 16,495 280 1.73 16,430 16,610 16,380 245
4 2022-06-24 16,215 225 1.41 16,045 16,290 16,045 151
In [6]:
fig1 = go.Figure()

date1 = ktop30['날짜'].values
end = ktop30['종가'].values
volume1 = ktop30['거래량'].values

fig1.add_trace(go.Scatter(x=date, y=fg_score, mode="lines", name="fg_score"))
fig1.add_trace(go.Scatter(x=date1, y=end, mode="lines", name="end price"))
fig1.add_trace(go.Scatter(x=date1, y=volume1, mode="lines", name="volume1"))
  • 종가, 거래량 정규화 필요

정규화: 종가¶

In [7]:
fig2 = go.Figure()

end1 = [int(e.replace(',', '')) / 550 for e in end]

fig2.add_trace(go.Scatter(x=date, y=fg_score, mode="lines", name="fg_score"))
fig2.add_trace(go.Scatter(x=date1, y=end1, mode="lines", name="end price"))
  • 종가의 경우 단순하게 값을 나눠서 정규화 진행
  • 유사점 확인 불가

정규화: 거래량¶

In [8]:
fig3 = go.Figure()

volume2 = np.log([int(v.replace(',', '')) for v in volume1]) * 5

fig3.add_trace(go.Scatter(x=date, y=fg_score, mode="lines", name="fg_score"))
fig3.add_trace(go.Scatter(x=date1, y=volume2, mode="lines", name="volume2"))
  • 거래량의 경우 로그화 후 곱셈으로 정규화 (단순하게... )
  • 종가보다 경향성이 있음을 확인

삼성 전자와 비교¶

In [9]:
samsung = pd.read_csv('samsung.csv')
samsung.head()
Out[9]:
날짜 종가 전일비 등락률(%) 시가 고가 저가 거래량
0 2022-06-30 52,000 - 1,400 -2.62 52,700 53,100 52,000 1,261,863
1 2022-06-29 53,400 - 1,300 -2.38 54,000 54,600 53,400 1,012,764
2 2022-06-28 54,700 + 200 0.37 54,500 55,000 54,400 1,074,637
3 2022-06-27 54,500 + 1,100 2.06 53,900 54,900 53,700 1,232,570
4 2022-06-24 53,400 + 1,300 2.50 52,200 53,600 52,200 1,092,956
In [10]:
fig4 = go.Figure()

date2 = samsung['날짜'].values
end_s = samsung['종가'].values
volume_s = samsung['거래량'].values

fig4.add_trace(go.Scatter(x=date, y=fg_score, mode="lines", name="fg_score"))
fig4.add_trace(go.Scatter(x=date2, y=end_s, mode="lines", name="end_s"))
fig4.add_trace(go.Scatter(x=date2, y=volume_s, mode="lines", name="volume_s"))

정규화: 종가¶

In [11]:
fig5 = go.Figure()

end_s1 = [int(e.replace(',', '')) / 1800 for e in end_s]

fig5.add_trace(go.Scatter(x=date, y=fg_score, mode="lines", name="fg_score"))
fig5.add_trace(go.Scatter(x=date2, y=end_s1, mode="lines", name="end_s1"))

정규화: 거래량¶

In [12]:
fig6 = go.Figure()

volume_s1 = np.log([int(v.replace(',', '')) for v in volume_s]) * 2.5

fig6.add_trace(go.Scatter(x=date, y=fg_score, mode="lines", name="fg_score"))
fig6.add_trace(go.Scatter(x=date1, y=volume_s1, mode="lines", name="volume_s1"))

VIX¶

In [13]:
vix = pd.read_csv('VIX.csv')
vix.head()
Out[13]:
Date Open High Low Close Adj Close Volume
0 2022-06-01 26.049999 27.730000 25.379999 25.690001 25.690001 0
1 2022-06-02 25.730000 26.500000 24.330000 24.719999 24.719999 0
2 2022-06-03 24.910000 25.959999 24.760000 24.790001 24.790001 0
3 2022-06-06 25.370001 25.809999 24.820000 25.070000 25.070000 0
4 2022-06-07 25.540001 26.240000 23.879999 24.020000 24.020000 0
In [14]:
fig7 = go.Figure()

date3 = vix['Date'].values
end_v = vix['Close'].values

fig7.add_trace(go.Scatter(x=date, y=fg_score, mode="lines", name="fg_score"))
fig7.add_trace(go.Scatter(x=date3, y=end_v, mode="lines", name="end_v"))

VKOSPI¶

In [15]:
vkospi = pd.read_csv('VKOSPI.csv')
vkospi.head()
Out[15]:
날짜 종가 오픈 고가 저가 거래량 변동
0 2022-06-02 17.60 17.88 17.92 17.60 - 1.97%
1 2022-06-03 16.87 16.97 17.26 16.81 - -4.15%
2 2022-06-07 18.10 17.92 18.33 17.62 - 7.29%
3 2022-06-08 17.10 17.71 17.84 17.10 - -5.52%
4 2022-06-09 17.00 17.31 17.47 16.81 - -0.58%
In [16]:
fig8 = go.Figure()

date4 = vkospi['날짜'].values
end_k = vkospi['종가'].values
volatility = [float(v[:-1]) for v in vkospi['변동'].values]

fig8.add_trace(go.Scatter(x=date, y=fg_score, mode="lines", name="fg_score"))
fig8.add_trace(go.Scatter(x=date4, y=end_k, mode="lines", name="end_k"))
fig8.add_trace(go.Scatter(x=date4, y=volatility, mode="lines", name="volatility"))
In [ ]: